diff --git a/seaborn/distributions.py b/seaborn/distributions.py
index 9f0cfacb..3033e207 100644
--- a/seaborn/distributions.py
+++ b/seaborn/distributions.py
@@ -279,13 +279,13 @@ class _DistributionPlotter(VectorPlotter):
                 hist = curves[key].reset_index(name="heights")
                 level_idx = hue_levels.index(level)
                 if self._log_scaled(self.data_variable):
-                    log_min = np.log10(hist["edges"])
-                    log_max = np.log10(hist["edges"] + hist["widths"])
-                    log_width = (log_max - log_min) / n
-                    new_min = np.power(10, log_min + level_idx * log_width)
-                    new_max = np.power(10, log_min + (level_idx + 1) * log_width)
-                    hist["widths"] = new_max - new_min
-                    hist["edges"] = new_min
+                    log_base = np.log10(hist["edges"])
+                    log_increment = np.log10(hist["edges"] + hist["widths"]) - log_base
+                    log_width = log_increment / n
+                    new_min = log_base + log_width * level_idx
+                    new_max = log_base + log_width * (level_idx + 1)
+                    hist["widths"] = np.power(10, new_max) - np.power(10, new_min)
+                    hist["edges"] = np.power(10, new_min)
                 else:
                     hist["widths"] /= n
                     hist["edges"] += level_idx * hist["widths"]
